//让某个DOM对象的某个（某些）属性 发生变化
//json {width:300,height:500}
//fn对应的实参是一个函数 放一些要执行的代码
function startMove(domobj, json, fn) {
  clearInterval(domobj.timer);
  domobj.timer = setInterval(function () {
    //假设所有的都达到了目标值
    let flag = true;
    for (let attr in json) {
      //attr 是属性名  json[attr] 是目标值
      let iCur;
      if (attr == "opacity") {
        iCur = parseInt(getStyle(domobj, "opacity") * 100); //透明度0-1 
      } else {
        iCur = parseInt(getStyle(domobj, attr)); //当前值
      }
      let iTar = json[attr];
      let iSpeed = (iTar - iCur) / 10;
      iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
      if (attr == "opacity") {
        domobj.style.opacity = (iCur + iSpeed) / 100;
      } else {
        domobj.style[attr] = iCur + iSpeed + "px";
      }

      /* if (iCur == iTar) { //这样写的话，只要有一个达到了目标值 定时器就清了
        clearInterval(domobj.timer);
      } */
      if (iCur != iTar) { //只要有一个没有达到目标值
        flag = false;
      }
    }
    if (flag) { //如果假设成立
      clearInterval(domobj.timer);
      //执行其他的代码
      if (fn) {
        fn();
      }

    }
  }, 20)
}

function getStyle(domobj, attr) {
  if (window.getComputedStyle) {
    return getComputedStyle(domobj, null)[attr];
  }
  return domobj.currentStyle[attr];
}